home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Screenblankers / GBlanker / GSource / var.c < prev   
C/C++ Source or Header  |  1996-09-26  |  2KB  |  108 lines

  1. /*
  2.  *    Copyright (c) 1994 Michael D. Bayne.
  3.  *    All rights reserved.
  4.  *
  5.  *    Please see the documentation accompanying the distribution for distribution
  6.  *  and disclaimer information.
  7.  */
  8.  
  9. #include <exec/memory.h>
  10. #include <string.h>
  11.  
  12. #include "includes.h"
  13. #include "protos/protos.h"
  14.  
  15. LONG GetVar37( STRPTR Name, STRPTR Buffer, LONG Size, ULONG Flags )
  16. {
  17.     struct Library *SysBase = *( struct Library ** )4L;
  18.     struct Library *DOSBase;
  19.     LONG RetVal;
  20.  
  21.     if(!( DOSBase = OpenLibrary( "dos.library", 37L )))
  22.         return -1;
  23.     
  24.     if( SysBase->lib_Version < 39 )
  25.     {
  26.         BYTE VarFileName[108];
  27.         BPTR VarFile;
  28.  
  29.         strcpy( VarFileName, "ENVARC:" );
  30.         AddPart( VarFileName, Name, 108 );
  31.  
  32.         if( VarFile = Open( VarFileName, MODE_OLDFILE ))
  33.         {
  34.             if( Flags & GVF_BINARY_VAR )
  35.             {
  36.                 if( Flags & GVF_DONT_NULL_TERM )
  37.                     RetVal = Read( VarFile, Buffer, Size );
  38.                 else
  39.                 {
  40.                     LONG Bytes = Read( VarFile, Buffer, Size );
  41.  
  42.                     Buffer[min( Bytes, Size-1 )] = '\0';
  43.                     RetVal = min( Bytes, Size-1 );
  44.                 }
  45.             }
  46.             else
  47.             {
  48.                 FGets( VarFile, Buffer, Size );
  49.                 if( Buffer[strlen( Buffer )-1] == '\n' )
  50.                     Buffer[strlen( Buffer )-1] = '\0';
  51.                 RetVal = ( LONG )strlen( Buffer );
  52.             }
  53.             Close( VarFile );
  54.         }
  55.         else
  56.             RetVal = -1;
  57.     }
  58.     else
  59.         RetVal = GetVar( Name, Buffer, Size, Flags );
  60.  
  61.     CloseLibrary( DOSBase );
  62.     
  63.     return RetVal;
  64. }
  65.  
  66. LONG SetVar37( STRPTR Name, STRPTR Buffer, LONG Size, ULONG Flags )
  67. {
  68.     struct Library *SysBase = *( struct Library ** )4L;
  69.     struct Library *DOSBase;
  70.     
  71.     if(!( DOSBase = OpenLibrary( "dos.library", 37L )))
  72.         return FALSE;
  73.     
  74.     if( !SetVar( Name, Buffer, Size, Flags ))
  75.         return FALSE;
  76.     
  77.     if( SysBase->lib_Version < 39 )
  78.     {
  79.         if( Flags & GVF_SAVE_VAR )
  80.         {
  81.             BYTE VarFileName[108];
  82.             BPTR VarFile;
  83.  
  84.             strcpy( VarFileName, "ENVARC:" );
  85.             AddPart( VarFileName, Name, 108 );
  86.  
  87.             if( VarFile = Open( VarFileName, MODE_NEWFILE ))
  88.             {
  89.                 if(( Flags & GVF_DONT_NULL_TERM )||
  90.                    ( Flags & GVF_BINARY_VAR ))
  91.                     Write( VarFile, Buffer, Size );
  92.                 else
  93.                 {
  94.                     Buffer[Size-1] = '\0';
  95.                     FPrintf( VarFile, "%s", Buffer );
  96.                 }
  97.                 Close( VarFile );
  98.             }
  99.             else
  100.                 return FALSE;
  101.         }
  102.     }
  103.  
  104.     CloseLibrary( DOSBase );
  105.  
  106.     return TRUE;
  107. }
  108.